Seminário sobre Ada - 2012/2 - Grupo 1
Histórico Em 1974, as forças armadas americanas buscavam unificar suas linguagens de programação afim de construirem programas com possível reutilização de fragmentos de código, além de visarem uma linguagem robusta e segura, com performance alta, principalmente para uso em sistemas embarcados e de aplicações militares em tempo real, onde falhas sempre são críticas. Com intuito de solucionar estes problemas criaram o HOLWG (High Order Language Working Group) '''.''' Durante o período de 1977 e 1983, a equipe liderada pelo francês Jean Ichbiah criou a linguagem de programação Ada, a qual havia sido encomendada pelo Departamento de Defesa americano. Desde 1983, a linguagem passou por diversas revisões com correções e melhorias, abaixo a tabela com as inclusão das revisões. O nome da linguagem foi uma homenagem a condessa de Lovelace, Ada Augusta Byron King (10 de Dezembro de 1815 – 27 de Novembro de 1852), que é conhecida por ser a primeira programadora do mundo, projetando algorítmos para a máquina analítica de Charles Babbage. Critérios de Avaliação da Linguagem Performance Manutebilidade Capacidade de Escrita Documentação Sintaxe Palavras reservadas Operadores Lista de operadores em ordem de precedência Maior ** abs not * / rem mod + - (unários) + - & (binários) = /= < > <= >= and or xor Menor Tipos Primitivos Tipos Derivados Tipos de Acesso Construtores Pode-se instanciar um dos tipos primitivos ou derivados declarando-os da seguinte maneira: variável : tipo; Exemplos com vários tipos: quantidade : Integer; arquivo : Text_IO.File_Type; tempo : Calendar.Time; litros : Float; Para instanciar um tipo e iniciá-lo com um valor diferente do padrão, basta adicionar ':=' (sem as aspas) e o valor desejado: quantidade : Integer := 4; tempo : Time := Calendar.Clock; litros : Float := 2,5; Alguns tipos não permitem a instanciação do valor durante a parte de declaração de variáveis, que é separada do corpo de execução do programa. O arquivo é um desses casos, em que seria necessário fazer o seguinte: --Inclusão de pacotes with Text_IO; use Text_IO; --Início do programa procedure Main is --Declaração de variáveis, tipos, procedimentos e funções encapsuladas pelo programa principal arquivo : Text_IO.File_Type; --Declaração do funcionamento do programa principal begin --Criação de um arquivo de texto para escrita, caso quisesse um arquivo para leitura, seria necessário alterar Text_IO.Out_File para Text_IO.In_File Create(File => arquivo, Mode => Text_IO.Out_File, Name => "arquivo.txt"); end Main; Além dos construtores já vistos, os tipos podem ser instanciados a partir da palavra reservada 'new', que é utilizada quando são usados tipos de acessos (espécie de ponteiros). Abaixo um exemplo de como se usar um tipo de acesso: with Text_IO; use Text_IO; procedure Main is string : access String; begin string := new String(1..20); --String de 20 posições Text_IO.Put_Line(string.all); -- .all serve para acessar todo o conteúdo do tipo acesso String end Main; Classes Métodos de classes e conteúdo de structs/classes são acessados de formas diferentes. Java não há distinção clara entre o que é uma variável e um método dentro de uma classe, como na seguinte classe telefone: class telefone { String telefone; String get_telefone (void){ return this.telefone; }; }; em que podemos acessar a variável telefone tanto por telefone.telefone quanto telefone.get_telefone. Em Ada acontece o seguinte: type telefone is telefone : String(1..10); function get_telefone () return String is return telefone; end get_telefone; end telefone; em que podemos acessar a variável telefone através de telefone.telefone, assim como Structs em C, e o método da classe/tipo pode ser acessada por telefone'get_telefone, assim distinguindo acesso de valores com . e métodos com ' . Pacotes Estrutura de Controle=